package com.behome.web.controller.media;

import com.behome.common.annotation.Log;
import com.behome.common.core.controller.BaseController;
import com.behome.common.core.domain.AjaxResult;
import com.behome.common.core.page.TableDataInfo;
import com.behome.common.enums.BusinessType;
import com.behome.common.utils.StringUtils;
import com.behome.system.domain.TMediaType;
import com.behome.system.service.IMediaTypeService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 媒资分类
 *
 * @author behome
 */
@RestController
@RequestMapping("/media/mediaType")
public class MediaTypeController extends BaseController {
    @Resource
    private IMediaTypeService mediaTypeService;

    /**
     * 获取媒资分类列表
     */
    @PreAuthorize("@ss.hasPermi('media:mediaType:list')")
    @GetMapping("/list")
    public TableDataInfo list(TMediaType mediaType) {
        startPage();
        List<TMediaType> list = mediaTypeService.selectMediaTypeList(mediaType);
        return getDataTable(list);
    }

    /**
     * 状态修改
     */
    @PreAuthorize("@ss.hasPermi('media:mediaType:edit')")
    @Log(title = "媒资分类管理", businessType = BusinessType.UPDATE)
    @PutMapping("/changeMediaTypeStatus")
    public AjaxResult changeMediaTypeStatus(@RequestBody TMediaType mediaType) {
        return toAjax(mediaTypeService.updateMediaTypeStatus(mediaType));
    }

    @PreAuthorize("@ss.hasPermi('media:mediaType:query')")
    @GetMapping(value = {"/", "/{id}"})
    public AjaxResult getInfo(@PathVariable(value = "id", required = false) Long id) {
        AjaxResult ajax = AjaxResult.success();
        if (StringUtils.isNotNull(id)) {
            TMediaType mediaType = mediaTypeService.selectMediaTypeById(id);
            ajax.put(AjaxResult.DATA_TAG, mediaType);
        }
        return ajax;
    }

    /**
     * 新增媒资分类
     */
    @PreAuthorize("@ss.hasPermi('media:mediaType:add')")
    @Log(title = "媒资分类管理", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@Validated @RequestBody TMediaType mediaType) {
        if (mediaTypeService.checkTypeNameUnique(mediaType)) {
            return error("新增用户'" + mediaType.getTypeName() + "'失败，该分类已存在");
        }
        mediaType.setStatus("1");
        mediaType.setCreateTime(new Date());
        mediaType.setCreateUser(getUserId());
        return toAjax(mediaTypeService.insert(mediaType));
    }

    /**
     * 修改媒资分类
     */
    @PreAuthorize("@ss.hasPermi('media:mediaType:edit')")
    @Log(title = "媒资分类管理", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@Validated @RequestBody TMediaType mediaType) {
        if (mediaTypeService.checkTypeNameUnique(mediaType)) {
            return error("修改分类'" + mediaType.getTypeName() + "'失败，该分类已存在");
        }
        return toAjax(mediaTypeService.update(mediaType));
    }

    /**
     * 删除媒资分类
     */
    @PreAuthorize("@ss.hasPermi('media:mediaType:remove')")
    @Log(title = "媒资分类管理", businessType = BusinessType.DELETE)
    @DeleteMapping("/{Ids}")
    public AjaxResult remove(@PathVariable Long[] Ids) {
        return toAjax(mediaTypeService.deleteMediaTypeIds(Ids));
    }

    @GetMapping("/getMediaTypeAll")
    public AjaxResult getMediaTypeAll() {
        List<TMediaType> list = mediaTypeService.selectMediaTypeListAll();
        return AjaxResult.success("获取全部类型成功",list);
    }
}
